﻿var Coor = [];
var map, currentPositionMarker;
var poly;
var Ruta = new Array();
var con = 0;
var marc;
var markers = new Array();


$(document).ready(function () {
    initializeMap();

    $("#vrutas").click(function () {
        document.getElementById('oculto').style.display = 'block';
        document.getElementById('oculto2').style.display = 'block';
        document.getElementById('oculto3').style.display = 'block';
        document.getElementById('oculto4').style.display = 'block';
        var polyOptions = {
            strokeColor: '#000000',
            strokeOpacity: 0.9,
            strokeWeight: 1
        };
        poly = new google.maps.Polyline(polyOptions);
        poly.setMap(map);
        google.maps.event.addListener(map, 'click', addLatLng);
    });
    $("#oculto").click(function () {
        google.maps.event.clearListeners(map, 'click');
        var tNomRuta = $("#tNomRuta").val();
        if (tNomRuta != "") {
            var tDescripcion = $("#tDescripcion").val();
            var tDistancia = $("#tDistancia").val();
            var tNumeroBuses = "0";
            var tTiempoRecorrido = $("#tTiempoRecorrido").val();
            var RutaDTO = {};
            RutaDTO.NomRuta = tNomRuta;
            RutaDTO.Descripcion = tDescripcion;
            RutaDTO.Distancia = tDistancia;
            RutaDTO.NumBuses = tNumeroBuses;
            RutaDTO.TiempoRecorrido = tTiempoRecorrido;
            var parametro = {
                mruta: JSON.stringify(RutaDTO)
            };
            var MiRuta = Ruta;
            var DirSer = localStorage.getItem("DirSerUsu");
            var ruta = DirSer + "Servicios/ServiciosJusTime.asmx/EnviarRuta";
            $.ajax({
                type: "GET",
                url: "/Servicios/ServiciosJusTime.asmx/EnviarRuta",
                data: parametro,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (result) {
                    if (result.d == "ok") {
                        EnviarPuntos(MiRuta, tNomRuta);
                    } else {
                        alert("Error en la nueva ruta, posiblemente los datos son incorrectos o el nombre de la ruta se encuentra repetido");
                    }
                },
                error: function (jqXHR, status, error) {
                    alert(error + "-" + jqXHR.responseText);
                }
            });

            document.getElementById('oculto').style.display = 'none';
            document.getElementById('oculto2').style.display = 'none';
            document.getElementById('oculto3').style.display = 'none';
            document.getElementById('oculto4').style.display = 'none';
            item = 0;
            Ruta = new Array();
        } else {
            alert("ERROR: El nombre de la ruta es un campo obligatorio, no puede estar vacio");
        }
    });
    $("#oculto2").click(function () {
        item = 0;
        Ruta = new Array();
        removeLine();
    });
    $("#oculto3").click(function () {
        removeLine();
        google.maps.event.clearListeners(map, 'click');
        document.getElementById('oculto').style.display = 'none';
        document.getElementById('oculto2').style.display = 'none';
        document.getElementById('oculto3').style.display = 'none';
        document.getElementById('oculto4').style.display = 'none';
    });
    $("#oculto4").click(function () {
        removeLatLng();
    });
});

function EnviarPuntos(MiRuta, tNomRuta) {
    var miitem = 1;
    for (con = 0; con < MiRuta.length; con++) {
        var miPunto = MiRuta[con];
        var miparametro = {
            Punto: JSON.stringify(miPunto),
            NomRuta: "'" + tNomRuta + "'",
            item: "'" + miitem + "'"
        }
        $.ajax({
            type: "GET",
            url: "/Servicios/ServiciosJusTime.asmx/AsigPuntosRuta",
            data: miparametro,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {
            },
            error: function (jqXHR, status, error) {
                alert(error + "-" + jqXHR.responseText);
            }
        });
        miitem = miitem + 1;
    }
    deleteMarkers();
    LlenarComboRutas();
    var haightAshbury = new google.maps.LatLng(10.466606, -73.252523);
    var mapOptions = {
        zoom: 14,
        center: haightAshbury
    };
    map = new google.maps.Map(document.getElementById('map-canvas'),
        mapOptions);
    $("#tNomRuta").val("");
    $("#tDescripcion").val("");
    $("#tDistancia").val("");
    $("#tTiempoRecorrido").val("");
    alert("La ruta fue creada con exito...");
}

function removeLatLng() {
    var path = poly.getPath();
    //alert(path.getLength());
    path.pop();
    //alert(Ruta.length);
    Ruta.pop();
    //alert(Ruta.length);
    if (con > 0) {
        con = con - 1;
    }
    if (con == 0) {
        deleteMarkers();
    }
}

function addLatLng(event) {
    var path = poly.getPath();
    path.push(event.latLng);
    var PuntoDTO = {};
    PuntoDTO.lat = event.latLng.lat();
    PuntoDTO.lon = event.latLng.lng();
    Ruta.push(PuntoDTO);
    if (con == 0) {
        addMarker(event.latLng);
    }
    con = con + 1;
}

function CargarElementosRutas() {
    LlenarComboRutas();
}

function ListRutas() {
    var parametro = {};
    var DirSer = localStorage.getItem("DirSerUsu");
    var ruta = DirSer + "/Servicios/ServiciosJusTime.asmx/getRutas";
    $.ajax({
        type: "GET",
        url: ruta,
        data: parametro,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            var lrutas = (typeof result.d) == 'string' ? eval('(' + result.d + ')') : result.d;
            var color = 0;
            $.each(lrutas, function (index, item) {
                if (item.NomRuta != 'SIN RUTA') {
                    DibujarRutaHome(item.NomRuta, color);
                    color = color + 1;
                }
            });
        },
        error: function (jqXHR, status, error) {
            alert(error + "-" + jqXHR.responseText);
        }
    });
}

function DibujarRutaHome(NomRutaHome, color) {
    LimpiarMapa();
    var polyOptions = {
        strokeColor: SelectColorRutaHome(color),
        strokeOpacity: 1.0,
        strokeWeight: 1,
    };
    var poly = {};
    poly = new google.maps.Polyline(polyOptions);
    poly.setMap(map);
    var parametro = {
        NomRuta: "'" + NomRutaHome + "'"
    };
    var DirSer = localStorage.getItem("DirSerUsu");
    var ruta = DirSer + "/Servicios/ServiciosJusTime.asmx/getCoordenadasRuta";
    $.ajax({
        type: "GET",
        url: ruta,
        data: parametro,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            var lpuntos = (typeof result.d) == 'string' ? eval('(' + result.d + ')') : result.d;
            $.each(lpuntos, function (index, item) {
                var path = poly.getPath();
                path.push(new google.maps.LatLng(item.lat, item.lon));
            });
        },
        error: function (jqXHR, status, error) {
            alert(error + "-" + jqXHR.responseText);
        }
    });
}

function SelectColorRutaHome(Sele) {
    switch (Sele) {
        case 0:
            return "#000000";
            break;
        case 1:
            return "#0000FF";
            break;
        case 2:
            return "#A52A2A";
            break;
        case 3:
            return "#00008B";
            break;
        case 4:
            return "#DC143C";
            break;
        case 5:
            return "#006400";
            break;
        case 6:
            return "#8B0000";
            break;
        case 7:
            return "#483D8B";
            break;
        case 8:
            return "#9400D3";
            break;
        case 9:
            return "#B22222";
            break;
        case 10:
            return "#008000";
            break;
        case 11:
            return "#4B0082";
            break;
        case 12:
            return "#7CFC00";
            break;
        case 13:
            return "#20B2AA";
            break;
        case 14:
            return "#00FF00";
            break;
        case 15:
            return "#800000";
            break;
        case 16:
            return "#0000CD";
            break;
        case 17:
            return "#008080";
            break;
        case 18:
            return "#9ACD32";
            break;
        case 19:
            return "#FF6347";
            break;
        case 20:
            return "#A0522D";
            break;


    }

}

function LlenarComboRutas() {
    var parametro = {};
    var DirSer = localStorage.getItem("DirSerUsu");
    var ruta = DirSer + "/Servicios/ServiciosJusTime.asmx/getRutas";
    document.getElementById("tRutaInfo").innerHTML = "";
    document.getElementById("tRutaEli").innerHTML = "";
    $.ajax({
        type: "GET",
        url: ruta,
        data: parametro,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            var parametro = {};
            var DirSer = localStorage.getItem("DirSerUsu");
            var ruta = DirSer + "/Servicios/ServiciosJusTime.asmx/getRutas";
            $.ajax({
                type: "GET",
                url: ruta,
                data: parametro,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (result) {
                    var lrutas = (typeof result.d) == 'string' ? eval('(' + result.d + ')') : result.d;
                    $.each(lrutas, function (index, item) {
                        if (item.NomRuta != 'SIN RUTA') {
                            $("#tRutaInfo").append("<li><button id='" + item.NomRuta + "' type='button' class='btn btn-default' onclick='InfoRuta(id)'>" + item.NomRuta + "</button></li>");
                            $("#tRutaEli").append("<li><button id='" + item.NomRuta + "' type='button' class='btn btn-default' onclick='EliminarRuta(id)' data-dismiss='modal'>" + item.NomRuta + "</button></li>");
                        }
                    });
                },
                error: function (jqXHR, status, error) {
                    alert(error + "-" + jqXHR.responseText);
                }
            });
        },
        error: function (jqXHR, status, error) {
            alert(error + "-" + jqXHR.responseText);
        }
    });
}

function InfoRuta(NomRuta1) {
    var parametro = {
        NomRuta: "'" + NomRuta1 + "'"
    };
    var DirSer = localStorage.getItem("DirSerUsu");
    var ruta = DirSer + "/Servicios/ServiciosJusTime.asmx/getRuta";
    $.ajax({
        type: "GET",
        url: ruta,
        data: parametro,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            var ruta = (typeof result.d) == 'string' ? eval('(' + result.d + ')') : result.d;
            $("#ttDescripcion").val(ruta.Descripcion);
            $("#ttDistancia").val(ruta.Distancia);
            $("#ttTiempoRecorrido").val(ruta.TiempoRecorrido);
            $("#ttNumeroBuses").val(ruta.NumBuses);
            DibujarRutaHome(NomRuta1, 2);
        },
        error: function (jqXHR, status, error) {
            alert(error + "-" + jqXHR.responseText);
        }
    });
}

function EliminarRuta(NomRuta1) {
    var confir = window.confirm("¿Desea eliminar la ruta " + NomRuta1 + " ?");
    if (confir) {
        var parametro = {
            NomRuta: "'" + NomRuta1 + "'"
        };
        var DirSer = localStorage.getItem("DirSerUsu");
        var ruta = DirSer + "/Servicios/ServiciosJusTime.asmx/EliminarRuta";
        $.ajax({
            type: "GET",
            url: ruta,
            data: parametro,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {
                alert("La ruta fue eliminada con exito...");
                LlenarComboRutas();
                var haightAshbury = new google.maps.LatLng(10.466606, -73.252523);
                var mapOptions = {
                    zoom: 14,
                    center: haightAshbury
                };
                map = new google.maps.Map(document.getElementById('map-canvas'),
                    mapOptions);
            },
            error: function (jqXHR, status, error) {
                alert(error + "-" + jqXHR.responseText);
            }
        });
    }
}

function addMarker(location) {
    var marker = new google.maps.Marker({
        position: location,
        map: map
    });
    markers.push(marker);
}

// Sets the map on all markers in the array.
function setAllMap(map) {
    for (var i = 0; i < markers.length; i++) {
        markers[i].setMap(map);
    }
}

// Removes the markers from the map, but keeps them in the array.
function clearMarkers() {
    setAllMap(null);
}

// Shows any markers currently in the array.
function showMarkers() {
    setAllMap(map);
}

// Deletes all markers in the array by removing references to them.
function deleteMarkers() {
    clearMarkers();
    markers = [];
}

// Funcion que valida campos de texto solo numeros
function ValidaSoloNumeros() {
    if ((event.keyCode < 48) || (event.keyCode > 57))
        event.returnValue = false;
}

function LimpiarMapa() {
    var haightAshbury = new google.maps.LatLng(10.466606, -73.252523);
    var mapOptions = {
        zoom: 14,
        center: haightAshbury
    };
    map = new google.maps.Map(document.getElementById('map-canvas'),
        mapOptions);
}